#include "SeqStack.h"

//打印栈中的元素
void SeqStackPrintChar(SeqStack * stack,const char *msg)
{
    if(stack==NULL)
    {//参数错误
        return;
    }
    printf("\n%s\n",msg);
    if(stack->size==0)
    {//栈为空
        return;
    }
///    printf("size: %lu\n",stack->size);
    size_t i=0;
//    printf("Top:  ");
    for(i=stack->size;i>0;i--)
    {
        printf("[%c] ",stack->data[i-1]);
    }
    printf("\n");
}
//初始化
void SeqStackInit(SeqStack *stack)
{
    if(stack==NULL)
    {//参数错误
        return;
    }
    stack->size=0;
}
//入栈操作
void SeqStackPush(SeqStack *stack,SeqStackType value)
{
    if(stack==NULL)
    {
        return;
    }
    if(stack->size==SeqStackSize)
    {//栈已经满了
        return;
    }
    stack->data[stack->size]=value;
    stack->size++;
}
//出栈操作
void SeqStackPop(SeqStack *stack)
{
    if(stack==NULL)
    {
        return;
    }
    if(stack->size==0)
    {//栈为空
        return;
    }
    stack->size--;
}
//取栈顶元素操作
int SeqStackTop(SeqStack *stack,SeqStackType *tmp)
{
    if(stack==NULL||tmp==NULL)
    {
        return 0;
    }
    if(stack->size==0)
    {
        return 0;
    }
    *tmp=stack->data[stack->size-1];
    return 1;
}
//求栈的大小
size_t SeqStackGetSize(SeqStack *stack)
{
    if(stack==NULL)
    {
        return (size_t)-1;
    }
    return stack->size;
}
//判断栈是否为空
int SeqStackEmpty(SeqStack *stack)
{
    if(stack==NULL)
    {
        return 0;
    }
    return stack->size==0;
}
//销毁栈
void SeqStackDestroy(SeqStack *stack)
{
    if(stack==NULL)
    {
        return;
    }
    stack->size=0;
}
